package work1.jdbcbooksystem;

import java.sql.*;

/**
 * @Author admin
 * @Date 2019/4/26 8:13
 * JDBC操作的工具类：
 *  抽取出增删改查操作的一些重复代码： 1）获取数据库连接 2）关闭
 */
public class JDBCUtils {
    /* static 静态的，修饰变量、方法。不需要创建对象，直接通过类名调用
      修饰代码块：表示这段代码随着类的加载而加载，且只执行一次
      获取数据库连接的代码块放在static中，让其只执行一次
    */
    private static Connection conn=null;
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/javabook";
            String user="root";
            String password="ykc578103878";
            conn= DriverManager.getConnection(url,user,password);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 返回数据库连接对象
     * @return
     */
    public static Connection getConnection(){
        return conn;
    }

    /**
     * 关闭(针对于增删改的关闭)
     * @param conn
     * @param pstmt
     */
    public static void close(Connection conn, PreparedStatement pstmt){
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(pstmt!=null){
            try {
                pstmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 针对查询的关闭
     * @param conn
     * @param pstmt
     * @param rs
     */
    public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs){
        close(conn,pstmt);
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }




}
